package com.example.rabc.config;

import com.example.rabc.service.ExternalAuthService;
import com.example.rabc.service.impl.LdapAuthAdapter;
import com.example.rabc.service.impl.OAuthAuthAdapter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * 认证适配器工厂配置类
 */
@Configuration
public class AuthAdapterFactory {
    
    @Value("${auth.adapter.type:local}")
    private String authAdapterType;
    
    /**
     * 根据配置创建相应的认证适配器实例
     * @return 外部认证服务适配器
     */
    @Bean
    public ExternalAuthService externalAuthService() {
        switch (authAdapterType.toLowerCase()) {
            case "ldap":
                return new LdapAuthAdapter();
            case "oauth":
                return new OAuthAuthAdapter();
            default:
                // 默认返回null，表示使用本地认证
                return null;
        }
    }
}